package com.gxc.graph;

/**
 * 有效的数独
 * 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ，验证已经填入的数字是否有效即可。
 *
 * 数字 1-9 在每一行只能出现一次。
 * 数字 1-9 在每一列只能出现一次。
 * 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。（请参考示例图）
 */
public class IsValidSudoku {

    public boolean isValidSudoku2(char[][] board) {
        //一次遍历
        int[][] row = new int[9][9];
        int[][] col = new int[9][9];
        int[][][] box = new int[3][3][9];

        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[i].length; j++) {
                int k = board[i][j] - '1';
                if (k>=0) {
                    row[i][k]++;
                    col[j][k]++;
                    box[i/3][j/3][k]++;
                    if (row[i][k]>1 || col[j][k]>1 || box[i/3][j/3][k]>1) return false;
                }
            }
        }
        return true;
    }

    public boolean isValidSudoku(char[][] board) {
        //按行
        //按竖
        //按3*3宫
        return true;
    }
}
